package com.example.parkingsharing.ui.navigation

import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.navigation.NavHostController
import androidx.navigation.NavType
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.navArgument
import com.example.parkingsharing.MainActivity
import com.example.parkingsharing.data.RouteConfig
import com.example.parkingsharing.ui.components.login.LoginScreen
import com.example.parkingsharing.ui.components.management.*
import com.example.parkingsharing.ui.components.user.UserScreen
import com.example.parkingsharing.ui.home.BaiduMapComposableFromLayout

/**
 * 用于添加页面路由，实现页面跳转功能
 * 使用示例：
 * composable(
 *     "PAGE?key1={key1}/{key2}", // 路由名称
 *     arguments = listOf(
 *         navArgument("key1"){
 *             // 路由中三部分的key名称必须一致,如上方的三个key1，同时key1为可选参数
 *             type = NavType.StringType // 设置参数类型
 *             defaultValue = "key1 default value" // 设置默认值
 *         },
 *     )
 * ) {
 *     // it:NavBackStackEntry用于传参， 用法如下：
 *     val arg = it.arguments?.getString("key1")
 *     // 要跳转的Compose可组合项
 *     Screen(navHostController, it)
 * }
 */
@Composable
fun NavContent(
    navHostController: NavHostController,
    modifier: Modifier = Modifier,
    isLogin: Boolean = false,
    context: MainActivity
) {
    NavHost(
        navController = navHostController,
        //startDestination:指定默认进入的页面
        startDestination = "${RouteConfig.Page.MAP_PAGE}",
        modifier = modifier,
    ) {
        // 主界面：显示地图
        composable(
            route = "${RouteConfig.Page.MAP_PAGE}",
        ) {
            // 集成百度地图的Xml
            BaiduMapComposableFromLayout(context)
        }

        // 登录界面
        composable(
            "LOGIN_SCREEN/{isLogin}/{key2}",
            // 导航传递参数
            arguments = listOf(
                navArgument("isLogin"){
                    type = NavType.BoolType
                    defaultValue = false },
                navArgument("key2"){
                    type = NavType.StringType
                    defaultValue = "key22234" },
            )
        ) {
            LoginScreen(navController = navHostController, backStackEntry = it)
        }

        // 用户界面
        composable(
            route = "${RouteConfig.Page.USER_PAGE}",
            // 导航传递参数
            arguments = listOf(
                navArgument("isLogin"){
                    type = NavType.BoolType
                    defaultValue = false },
                navArgument("key2"){
                    type = NavType.StringType
                    defaultValue = "key22234" },
            ),
            deepLinks = listOf(
                // 用于深层链接
            )
        ) {
            UserScreen(navController = navHostController, backStackEntry = it)
        }

        // 未登录界面：去登录按钮
        composable(
            route = "${RouteConfig.Page.NOT_LOGIN_PAGE}",
        ) {
            // 这个界面的功能不用实现先
            NotLogin()
        }

        // 主界面：车辆管理
        composable(
            route = "${RouteConfig.Page.CAR_PAGE}",
        ) {
            CarManagement()
        }

        // 车位管理
        composable(
            route = "${RouteConfig.Page.SPOT_PAGE}",
        ) {
            SpotManagement()
        }

        // 订单管理
        composable(
            route = "${RouteConfig.Page.ORDER_PAGE}",
        ) {
            OrderManagement()
        }

        // 积分管理
        composable(
            route = "${RouteConfig.Page.POINTS_PAGE}",
        ) {
            // 这个界面的功能不用实现先，放在这只是为了好看
            PointManagement()
        }
    }
}